const path = require("path");
var webpack = require("webpack");
module.exports = {
  publicPath: "./", // 基本路径
  outputDir: "dist", // 输出文件目录
  lintOnSave: false, // eslint-loader 是否在保存的时候检查
  // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
  // webpack配置
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === "production") {
      // 为生产环境修改配置...
      config.mode = "production";
    } else {
      // 为开发环境修改配置...
      config.mode = "development";
    }
    Object.assign(config, {
      // 开发生产共同配置
      resolve: {
        alias: {
          "@": path.resolve(__dirname, "./src"),
          "@c": path.resolve(__dirname, "./src/components"),
          "@p": path.resolve(__dirname, "./src/pages"),
        }, // 别名配置
      },
    });
  },
  productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
  devServer: {
    proxy: {
      "/api": {
        target: "http://47.108.176.163:7777/", //接口域名
        changeOrigin: true, //是否跨域
        ws: true, //是否代理 websockets
        secure: true, //是否https接口
        pathRewrite: {
          //路径重置
          "^/api": "",
        },
      },
    },
  },

  configureWebpack: (config) => {
    Object.assign(config, {
      // 开发生产共同配置
      // externals: {
      //   'vue': 'Vue',
      //   'element-ui': 'ELEMENT',
      //   'vue-router': 'VueRouter',
      //   'vuex': 'Vuex'
      // } // 防止将某些 import 的包(package)打包到 bundle 中，而是在运行时(runtime)再去从外部获取这些扩展依赖(用于csdn引入)
      plugins: [
        ...config.plugins,
        new webpack.ProvidePlugin({
          jQuery: "jquery",
          $: "jquery",
          "windows.jQuery": "jquery",
        }),
      ],
    });
    config.module.rules.push({
      test: /\.worker.js$/,
      use: {
        loader: "worker-loader",
        options: { inline: true, name: "workerName.[hash].js" },
      },
    });
  },
  parallel: false,
  chainWebpack: (config) => {
    config.output.globalObject("this");
    // 修复HMR
    config.resolve.symlinks(true);
    // 别名配置
    console.log("__dirname", __dirname);
    config.resolve.alias.set("jquery$", "jquery/dist/jquery.min.js");
  },
};
